<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 100px;
            height: 100px;
            background: skyblue;
            position: absolute;
        }
    </style>
</head>
<body>
    <button>去100</button>
    <button>回8</button>
    <div class="box"></div>
    <script>
        let oBtns=document.querySelectorAll("button");
        let oBox=document.querySelector(".box");

        // oBtns[0].addEventListener("click",()=>{
        //     let timer=setInterval(()=>{
        //         let target=100;
        //         oBox.style.left=oBox.offsetLeft+10+"px";
        //         if(target-oBox.offsetLeft<=10){
        //             clearInterval(timer);
        //             oBox.style.left=target+"px";
        //         }
        //     },50)
        // })
        // oBtns[1].addEventListener("click",()=>{
        //     let timer=setInterval(()=>{
        //         let target=8;
        //         oBox.style.left=oBox.offsetLeft+(-10)+"px";
        //         if(Math.abs(target-oBox.offsetLeft)<=Math.abs(-10)){
        //             clearInterval(timer);
        //             oBox.style.left=target+"px";
        //         }
        //     },50)
        // })



        // 改进
            function fn(o,target){
                
                clearInterval(o.timer);
                o.timer=setInterval(()=>{
                    let step=target>o.offsetLeft?10:-10;
                    o.style.left=o.offsetLeft+step+"px";
                    if(Math.abs(target-o.offsetLeft)<=Math.abs(step)){
                        clearInterval(o.timer);
                        o.style.left=target+"px";
                    }
                },50);
            }
        oBtns[0].addEventListener("click",()=>{
            fn(oBox,100)
        })
        oBtns[1].addEventListener("click",()=>{
            fn(oBox,8)
        })
    </script>
</body>
</html>